package com.mcc.app.group.service;

import com.mcc.app.group.domain.GroupSche;
import com.mcc.app.group.dto.GroupScheAutoDTO;
import com.mcc.app.group.dto.GroupScheBatchDTO;

import java.util.Date;
import java.util.List;

/**
 * 排班计划Service接口
 *
 * @author gxy
 * @date 2021-07-08
 */
public interface IGroupScheService {

    /**
     * 查询排班计划
     *
     * @param scheId 排班计划ID
     * @return 排班计划
     */
    GroupSche selectGroupScheById(Long scheId);

    /**
     * 查询排班计划列表
     *
     * @param groupSche 排班计划
     * @return 排班计划集合
     */
    List<GroupSche> selectGroupScheList(GroupSche groupSche);

    /**
     * 新增排班计划
     *
     * @param groupSche 排班计划
     * @return 结果
     */
    int insertGroupSche(GroupSche groupSche);

    /**
     * 修改排班计划
     *
     * @param groupSche 排班计划
     * @return 结果
     */
    int updateGroupSche(GroupSche groupSche);

    /**
     * 删除排班计划信息
     *
     * @param scheId 排班计划ID
     * @return 结果
     */
    int deleteGroupScheById(Long scheId);

    /**
     * 批量删除排班计划
     *
     * @param scheIds 需要删除的排班计划ID
     * @return 结果
     */
    int deleteGroupScheByIds(Long[] scheIds);

    boolean checkGroupSche(GroupSche groupSche);

    void calTimeGroupSche(GroupSche groupSche);

    void calTimeGroupSche(GroupSche groupSche, Date nowDt);

    boolean checkGroupScheBatch(GroupScheBatchDTO groupScheBatch);

    boolean batchDaySche(GroupScheBatchDTO groupScheBatch);

    boolean setAutoSche(GroupScheAutoDTO groupScheAuto);

    GroupScheAutoDTO getAutoSche();

    GroupSche getGroupScheByDt(Date dt);

    GroupSche getGroupScheByClasses(Date scheDate, Long classesId);
}
